//// 赋值类双目操作符函数
//#include <iostream>
//using namespace std;
//
//class Human {
//public:
//    Human(int age = 0, const char* name = "匿名") :m_age(age), m_name(name) {
//        // [int m_age = age;]
//        // [string m_name(name);]
//    }
//    void getInfo() {
//        cout << "姓名:" << m_name << ", 年龄:" << m_age << endl;
//    }
//    // 成员形式操作符函数
//    Human& operator+=(/* Human* this */const Human& r) {
//        this->m_age = this->m_age + r.m_age;
//        this->m_name = this->m_name + "+" + r.m_name;
//        return *this;
//    }
//private:
//    int m_age;
//    string m_name;
//    friend Human operator+(const Human& l, const Human& r); // 友元声明
//};
//// 全局形式操作符函数  自己课下完成
//
//// 模拟类的设计者(类库\别人设计的类\自己设计的类)
//// -----------------------------
//// 模拟用户(使用类的人)
//
//int main(void) {
//    Human a(22, "张飞"), b(20, "赵云");  // 非常左值
//    const Human c(25, "关羽"), d(32, "马超"); // 常左值
//
//    ((a += b) += c) += Human(45, "黄忠");
//    a.getInfo();
//    /*
//       a += b; // ==> a.operator+=(b)  或 operator+=(a,b)
//       a.getInfo();
//
//       a += c; // ==> a.operator+=(c)  或 operator+=(a,c)
//       a.getInfo();
//
//       a += Human(45,"黄忠"); // ==> a.operator+=(Human(45,"黄忠")) 或 operator+=(a,Human(45,"黄忠"))
//       a.getInfo();
//   */
//   /*
//     int a = 3, b = 5;         // 非常左值
//     const int c = 7, d = 9;   // 常左值
//
//     (a = b) = 666;
//     a = c;
//     a = 5;
//     c = b; // error
//     5 = b; // error
//   */
//    return 0;
//}
